{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第7章 自然言語処理による感情分析（Transformer）の準備ファイル\n",
    "\n",
    "- 本ファイルでは、第7章で使用するフォルダの作成とファイルのダウンロードを行います。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import urllib.request\n",
    "import zipfile\n",
    "import tarfile"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# フォルダ「data」が存在しない場合は作成する\n",
    "data_dir = \"./data/\"\n",
    "if not os.path.exists(data_dir):\n",
    "    os.mkdir(data_dir)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# word2vec学習済みモデルをダウンロード\n",
    "\n",
    "東北大学 乾・岡崎研究室で公開されているデータ\n",
    "\n",
    "http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/\n",
    "\n",
    "にある\n",
    "\n",
    "http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/data/20170201.tar.bz2\n",
    "    \n",
    "をダウンロードして使用します"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# word2vecの日本語学習済みモデル（東北大学 乾・岡崎研究室）をダウンロード。時間が15分ほどかかります\n",
    "\n",
    "url = \"http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/data/20170201.tar.bz2\"\n",
    "save_path = \"./data/20170201.tar.bz2\"\n",
    "if not os.path.exists(save_path):\n",
    "    urllib.request.urlretrieve(url, save_path)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# './data/20170201.tar.bz2'の解凍　5分ほどかかります\n",
    "\n",
    "# tarファイルを読み込み\n",
    "tar = tarfile.open('./data/20170201.tar.bz2', 'r|bz2')\n",
    "tar.extractall('./data/')  # 解凍\n",
    "tar.close()  # ファイルをクローズ\n",
    "\n",
    "# フォルダ「data」内にフォルダ「entity_vector」というものができ、その中に「entity_vector.model.bin」というファイルができています。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# fastTextの英語学習済みモデルをダウンロード"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# fastTextの公式の英語学習済みモデル（650MB）をダウンロード。時間が5分ほどかかります\n",
    "url = \"https://dl.fbaipublicfiles.com/fasttext/vectors-english/wiki-news-300d-1M.vec.zip\"\n",
    "save_path = \"./data/wiki-news-300d-1M.vec.zip\"\n",
    "if not os.path.exists(save_path):\n",
    "    urllib.request.urlretrieve(url, save_path)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# フォルダ「data」内の「/wiki-news-300d-1M.vec.zip」を解凍する\n",
    "\n",
    "zip = zipfile.ZipFile(\"./data/wiki-news-300d-1M.vec.zip\")\n",
    "zip.extractall(\"./data/\")  # ZIPを解凍\n",
    "zip.close()  # ZIPファイルをクローズ\n",
    "\n",
    "# フォルダ「data」内にフォルダ「wiki-news-300d-1M.vec」というものができます。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# IMDbデータセットをダウンロード\n",
    "\n",
    "http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# IMDbデータセットをダウンロード。30秒ほどでダウンロードできます\n",
    "\n",
    "url = \"http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz\"\n",
    "save_path = \"./data/aclImdb_v1.tar.gz\"\n",
    "if not os.path.exists(save_path):\n",
    "    urllib.request.urlretrieve(url, save_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# './data/aclImdb_v1.tar.gz'の解凍　1分ほどかかります\n",
    "\n",
    "# tarファイルを読み込み\n",
    "tar = tarfile.open('./data/aclImdb_v1.tar.gz')\n",
    "tar.extractall('./data/')  # 解凍\n",
    "tar.close()  # ファイルをクローズ\n",
    "\n",
    "# フォルダ「data」内にフォルダ「aclImdb」というものができます。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# fastTextの学習済みモデルをダウンロード\n",
    "\n",
    "fastTextの日本語学習済みモデルについては、手動で手元のPCでQiita記事「いますぐ使える単語埋め込みベクトルのリスト」\n",
    "\n",
    "https://qiita.com/Hironsan/items/8f7d35f0a36e0f99752c\n",
    "\n",
    "のfastTextの「URL2：Download Word Vectors(NEologd)」部分のリンク\n",
    "\n",
    "https://drive.google.com/open?id=0ByFQ96A4DgSPUm9wVWRLdm5qbmc\n",
    "\n",
    "からGoogle Driveのリンクに飛び、Google Driveから「vector_neologd.zip」を手元のPCにダウンロードします。\n",
    "\n",
    "ダウンロードしたzipファイルを、AWSのディープラーニング用EC2でJupyterNotebookを開き、\n",
    "\n",
    "フォルダ「7_nlp_sentiment_transformer」のフォルダ「data」に行き、フォルダ「data」内に「vector_neologd.zip」をアップロードします。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# フォルダ「data」内の「vector_neologd.zip」を解凍する\n",
    "\n",
    "zip = zipfile.ZipFile(\"./data/vector_neologd.zip\")\n",
    "zip.extractall(\"./data/vector_neologd/\")  # ZIPを解凍\n",
    "zip.close()  # ZIPファイルをクローズ\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
